#1. 什么是类和实例并说明他们之间的关系
#class类是一种约束、规则，基于这种约束或规则创建的一个具体对象称为实例
#2. 类的实例方法、类方法和静态分别如何定义举例说明，并总结它们的应用场景
#类的实例方法
class Person:
    def showself(self):
        print('普通的方法，和我自己有关。self={}'.format(self))
#使用,通过实例化后方法绑定使用它，此为常用方式
Person().showself()

#类的静态方法
class Person:
    HEIGHT = 180
    @staticmethod
    def static_method():
        print('静态方法')
        print(Person.HEIGHT)
#使用，无需实例方法绑定，不需要传递self,较少使用
Person().static_method()

#类方法
class Person:
    @classmethod
    def class_method(cls):
        print('类方法')
        print("{0}'s name = {0.__name__}".format(cls))
        cls.HEIGHT = 170
#使用，使用类自身调用，而不是类所创建的实例
Person.class_method()

#3. MRO是什么，描述其查找顺序
#method resolution order方法解析顺序,解决基类搜索顺序问题。
#有三种算法：
# 经典算法，按照括号内定义，从左到右，深度优先策略
# 新式类算法：经典算法升级，重复的只保留最后一个
# C3算法：在类被创建出来的时候，就计算出一个MRO有序列表

#4. Mixin是什么，描述其应用场景
#基于多继承，Mixin就是其它类混合进来，同时带来了类的属性和方法。Mixin体现的是一种组合的设计模式。使用时，Mixin类通常在继承列表的第一个位置。
# Mixin类仅实现单一功能，通常不能独立工作，因为它是准备混入别的类中的部分功能实现。